This invention is in the field of computer graphics. More specifically, it is a method and apparatus for controlling a computer graphics raster plotter in a manner which improves the quality of the plot.
Computer graphics can be defined as any output from a computer that is presented in pictorial form. Although this definition does not necessarily exclude text, the main thrust of computer graphics is the display of graphs, pictures, maps and other similar types of data.
Devices used to display computer graphics output include Cathode Ray Tubes (`CRTs`), Liquid Crystal Displays (`LCDs`) and single- or multi-color plotters. Graphics display units must be able to both accept a high rate of data input and display that data accurately and very quickly.
Although it is possible to control a graphics plotter directly from the computer generating the plot, this often results in slowing down the rate at which the plot is outputted. Typically, plotters print one line of the plot at a given time. The data for each of these lines must be supplied to the plotter in a particular, "rasterized" form. The rate at which the computer can convert graphics data into rasterized form is often considerably less than the maximum speed that the plotter can print or display that data. If the computer is directly coupled to the plotter, this discrepancy in speeds slows the plotter's rate of output in an undesirable way.
One solution to the problem of rasterizing data quickly enough to drive the plotter at high speeds has been to place an intermediate unit or "controller" between the computer generating the graphical output and the plotter which draws it. In simple terms, the controller accepts high level commands from the computer such as "draw a line from X,Y coordinates 2,7 to X,Y coordinates 6,9". The controller reduces these high level commands into simpler commands and decides where dots or pixels need to be drawn or activated to create such a line. After the pattern of dots has been calculated, the controller commands the plotter to start printing, using the calculated dot pattern.
Many controllers use two stages to create the desired final output. FIG. 1 shows such a controller. The controller receives graphics commands over line 12 from host computer 13. Parser 17 takes these commands and breaks them down into a simpler set of commands. Then the parser divides the proposed output image into a series of so-called raster bands. The size of these bands is determined by the size of the individual buffer memories that are associated with rasterizer 19. For example, if rasterizer 19 has 256K RAM buffer memories, the number of pixels which can be generated on any given line multiplied by the number of lines in each band will equal at most 256k. The parser also determines what objects will be drawn in each band. Once the commands and the contents of all the raster bands in a given plot are calculated, this information is forwarded to rasterizer 19.
Rasterizer 19 calculates exactly which pixels in each band must be turned on to create the desired image (this calculation is repeated for each color ink that the plotter can use for each raster band). As these calculations are completed and the raster buffer memory for a given band is filled, the rasterizer begins writing to another raster buffer memory, if such is available. If only one raster memory is available, the raster memory sends its contents to the plotter while the rasterizer waits to generate more information. Most, if not all controllers have at least two buffer memories. Each buffer is written to in succession, and outputs its data as soon as it is filled and when the plotter can accept the data. The process of calculating the pixels to be turned on, filling alternatively raster memory 21 or 23 therewith, and directing the contents of the raster memories to plotter 25 continues until all graphic information has been outputted.
If there were only one buffer, plotting operations would frequently have to slow down. In some machines this type of problem was solved by creating a large frame buffer to store data for the entire plot at one time. This approach has limited utility as plots often exceed the storage capacity of the frame buffer.
It is obvious that as the complexity of the output increases, the length of time necessary for rasterizer 19 to calculate the exact pixel representations of the image for each color used by the plotter will also increase. When this complexity reaches a certain point, the memory buffer or buffers are able to output their contents much more quickly than rasterizer 19 can refill them. As this time differential increases, more and more pauses in the printing process develop, due to the buffer memories waiting for more output data.
With many types of plotters, the pauses which occur when the rasterizer cannot fill the buffer memory quickly enough to keep the plotter moving create serious problems. For example, in laser plotters, dry toner may adhere to the fusing drum during the pause, ruining the drum and requiring repair or replacement. In electrostatic plotters, liquid toner begins to soak the paper during the pauses, creating a dark band of color where the paper was stopped, which band is called a "toner bar." Even in a CRT or LCD display, the pause of the cursor while more data is being generated by the rasterizer is, if not harmful, at least distracting. All these outcomes are an undesirable consequence of there being insufficient output from the rasterizer to keep pace with the output device's maximum output speed.
The attempts to solve these problems have so far been unsatisfactory. Some plotters have a user adjustable speed control which gives the operator the option to slow the movement of paper in the plotter, thereby giving the rasterizer more time to fill the respective buffers. Unfortunately, this manual method requires the operator to study the prospective plot prior to its actual printing and determine if the density of characters and color is too great to allow continuous high-speed paper movement. Also, in a plot requiring multiple passes, each pass using a different color ink, slow paper movement may only be necessary for one pass and not the others. Presetting the machine to slow speed in this instance will waste time during most of the passes in order to accommodate the single slow pass. In laser plotters, a standard technique has been to abort the plot if a situation occurs where the paper needs to be halted. Although the abort protects the fusing drum, it requires that a completely new plot be drawn. As the complexity of the plot has not changed, there is no guarantee that repeated aborts will not occur. This is obviously expensive in computer time and paper.
A clear need thus exists for a controller for use with computer graphics output devices which can determine, prior to the start of either plotting or display, if the proposed output can be rasterized quickly enough to drive the plotter device at its highest speed and, if it cannot be rasterized that quickly, the controller should determine if slow speed output is preferable or if temporary storage on some intermediate memory would result in the maximum possible output speed.